//
//  UIWindow+ZXHierarchy.h
//  YiShangbao
//
//  Created by simon on 2017/4/24.
//  Copyright © 2017年 com.Microants. All rights reserved.
//
//  4.24 新增类目
//  2018.8.01 增加获取键盘window，可见window的方法；
//  2019.06.11 增加注释；
//  2020.2.10 修改zx_currentViewController;
//  2020.2.20 优化
//  2021.4.28 修改zx_safeAreaStatusBarHeight问题；
//  2022.03.09 移除safeArea方法

#import <UIKit/UIKit.h>

NS_ASSUME_NONNULL_BEGIN

@interface UIWindow (ZXHierarchy)


/// 根据应用程序获取UIApplication的windows 或UIWindowScene的windows；兼容iOS13场景Scene；
@property (nonatomic, readonly, class, nullable) NSArray<__kindof UIWindow *> *zx_windows;


/// 根据应用程序获取appDelegate或SceneDelegate的window;兼容iOS13场景Scene；
@property (nonatomic, assign, readonly, class, nullable) UIWindow *zx_mainWindow;


/// 获取keyWindow。2024.1.13新增
@property (nonatomic, assign, readonly, class, nullable) UIWindow *zx_keyWindow;


/// 获取键盘window。
/// 注意：待验证测试，目前只在textField触发键盘后验证过。
@property (nonatomic, assign, readonly, class, nullable) UIWindow *zx_remoteKeyboardWindow;
//+ (nullable UIWindow *)zx_remoteKeyboardWindow;


/// 获取最上层window方式一；除了键盘window就是keyWindow； 2018/08/01
/// 注意：待验证测试，目前只在textField触发键盘后验证过。
//@property (nonatomic, assign, readonly, class, nullable) UIWindow *zx_frontVisibleWindow;
//+ (nullable UIWindow *)zx_frontVisibleWindow;


/// 获取最上层window方式二;用于toast提示。
//+ (nullable UIWindow *)zx_frontWindow;
@property (nonatomic, assign, readonly, class, nullable) UIWindow *zx_frontWindow;


/*
返回topestMostWindowController堆栈中的topViewController；如果是tabBarController，则返回tabBarController的选中控制器，如果当前没有选中的viewControoller，则返回tabBarController的第一个控制器；
  UIWindow.zx_currentViewController
  注意：在UIAlertController事件回调中是已经dismiss后的，所以如果获取zx_currentViewController跟UIAlertController一点关系也没有；
 */
@property (nonatomic, assign, readonly, class, nullable) UIViewController *zx_currentViewController;







@end

NS_ASSUME_NONNULL_END
